﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraBars;
using Lola.Vista.Porteria;
using Lola.Servicio;

namespace Lola.Vista.Comunes
{
    public partial class xfrmMicrosenGalpon : DevExpress.XtraBars.Ribbon.RibbonForm
    {
        private string _sector = string.Empty;
        private string _galpon = string.Empty;
        /// <summary>
        /// 
        /// </summary>
        /// <param name="Sector"></param>
        public xfrmMicrosenGalpon(String galpon, String sector)
        {
            this._galpon = galpon;
            this._sector = sector;
            this.InitializeComponent();

            this.barSSector.Caption = _sector;
            this.CargarGrilla();
        }

        /// <summary>
        /// 
        /// </summary>
        private void CargarGrilla()
        {
            List<DTO.Grilla.dtoSectorMicro> micros = Lola.Servicio.Sistema.getMicrosPorSector(_galpon, _sector);
            this.gridControl1.DataSource = micros;
        }

        /// <summary>
        /// Segun que sector sea ingresado se activan o no algunas opciones
        /// </summary>
        private void configurarControles()
        { 
        }
        /// <summary>
        /// 
        /// Privada para evitar instancias sin indicar sector
        /// </summary>
        private xfrmMicrosenGalpon()
        {
            InitializeComponent();
        }


        private void btnIncidencias_ItemClick(object sender, ItemClickEventArgs e)
        {
            string servicio = this.ObtenerServicioSeleccionado(); //"0499470D-5" //Tengo que enviar el codigo de servicio del item de la grilla que se selecciono
            if (servicio == null)
            {
                MessageBox.Show("Debe seleccionar el Servicio", "Incidencia",
                MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            else
            {
                xfrmIncidencias frm = new xfrmIncidencias(this._sector, servicio, this._galpon);
                frm.ShowDialog();
            }
        }

        private void btnIngresoaGalpon_ItemClick(object sender, ItemClickEventArgs e)
        {
            xfrmIngresoGalpon frm = new xfrmIngresoGalpon(this._galpon, this._sector);
            frm.ShowDialog();
            this.CargarGrilla();
        }

        private void btnEgresodeGalpon_ItemClick(object sender, ItemClickEventArgs e)
        {
            String codigoServicio = this.ObtenerServicioSeleccionado();
            if (codigoServicio.Equals(String.Empty))
            {
                MessageBox.Show("Debe seleccionar una unidad para sacar del galpon!", "Salida de " + _galpon, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                return;
            }

            if (Sistema.getInstancia().ServicioHabilitadoParaSalir(this._galpon, this._sector, codigoServicio))
            {
                MessageBox.Show(
                    "El servicio " + codigoServicio + " esta habilitado para salir de " + _galpon, 
                    "Salida de " + this._galpon, 
                    MessageBoxButtons.OK, 
                    MessageBoxIcon.Information);

                xfrmEgresoGalpon frm = new xfrmEgresoGalpon(this._galpon, this._sector, codigoServicio);
                frm.ShowDialog();
                this.CargarGrilla();
            }
            else
            {
                MessageBox.Show(
                    "El servicio " + codigoServicio + " NO puede salir de " + _galpon + " POR NO HABER CUMPLIDO TODO EL CIRCUITO", 
                    "Salida de " + this._galpon,
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Stop);

                return;
            }


        }

        private String ObtenerServicioSeleccionado()
        {
            String resultado = String.Empty;
            try
            {
                resultado = ((Lola.DTO.Grilla.dtoSectorMicro)this.gridView1.GetRow(this.gridView1.GetSelectedRows()[0])).CodigoServicio;
            }
            catch (Exception)
            { }
            return resultado;
        }

        private void btnIncidenciaAlta_ItemClick(object sender, ItemClickEventArgs e)
        {
            String codigoServicio = this.ObtenerServicioSeleccionado();

            if (codigoServicio.Equals(string.Empty))
            {
                MessageBox.Show("Debe seleccionar un micro para darle salida");
                return;
            }
            else
            {
                xfrmIncidenciasABMC frm = new xfrmIncidenciasABMC(codigoServicio,this._galpon,this._sector);
                frm.ShowDialog();
            }
            // TODO: Debe darse de alta una incidencia con el servicio seleccionado.
        }

    }
}